﻿using Runtime.Services.Battle;

namespace Runtime.Services.Battle {

    /// <summary>
    /// 战斗实体承载器，无资产
    /// </summary>
    public interface IDFR_BattleEntityNoAssetVehicle : IDFR_BattleEntityAssetVehicle {
    }

    /// <summary>
    /// 战斗实体承载器
    /// </summary>
    /// <typeparam name="T">资产类型</typeparam>
    public interface IDFR_BattleEntityAssetVehicle<T> : IDFR_BattleEntityAssetVehicle {

        /// <summary>
        /// 资产实例
        /// </summary>
        new T Content { get; }
    }

    /// <summary>
    /// 战斗实体承载器
    /// </summary>
    public interface IDFR_BattleEntityAssetVehicle {

        /// <summary>
        /// 加载完成代理
        /// </summary>
        public delegate void LoadedDelegate();

        /// <summary>
        /// 加载完成事件
        /// </summary>
        event LoadedDelegate Loaded;

        /// <summary>
        /// 资产实例
        /// </summary>
        object Content { get; }
    }
}

namespace Internal.Runtime.Services.Battle {

    public interface IDFR_BattleEntityAssetVehicleInternal : IDFR_BattleEntityAssetVehicle {

        void OnLoaded(object @object);
    }
}

